package model;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.IndexColumn;

@Entity(name = "tb_usuarios")
public class Usuario {
	
	@Id
	@GeneratedValue
	@Column(name="ID")
	private long id;
	
	@ManyToOne()
	private Funcionario funcionario;

	@OneToMany(mappedBy = "usuario", cascade={CascadeType.ALL,CascadeType.REMOVE},fetch = FetchType.EAGER)
	private Set<Usuario> usuario = new HashSet<Usuario>();
	
	@OneToMany(mappedBy = "usuario", cascade={CascadeType.ALL,CascadeType.REMOVE},fetch = FetchType.EAGER)
	private Set<Chamado> chamado = new HashSet<Chamado>();
	
	@ManyToOne()
	private Loja loja;

	@Column(name = "LOGIN", length = 50, nullable = false)
	private String login;
	
	@Column(name = "PASSWORD", length = 50, nullable = false)
	private String password;
	
	@Column(name = "CANCELADO", nullable = false)
	private boolean cancelado;

/*	@Override
	public String toString() {
		return "Usuario [id=" + id + ", funcionario=" + funcionario
				+ ", usuario=" + usuario + ", chamado=" + chamado + ", loja="
				+ loja + ", login=" + login + ", password=" + password
				+ ", cancelado=" + cancelado + "]";
	}
*/
	 @Override
     public String toString() {
             return this.login;
     }
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public Set<Usuario> getUsuario() {
		return usuario;
	}

	public void setUsuario(Set<Usuario> usuario) {
		this.usuario = usuario;
	}

	public Set<Chamado> getChamado() {
		return chamado;
	}

	public void setChamado(Set<Chamado> chamado) {
		this.chamado = chamado;
	}

	public Loja getLoja() {
		return loja;
	}

	public void setLoja(Loja loja) {
		this.loja = loja;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public boolean isCancelado() {
		return cancelado;
	}

	public void setCancelado(boolean cancelado) {
		this.cancelado = cancelado;
	}

	
}
